package ws;

import java.util.ArrayList;
import java.util.Collection;

import org.orm.PersistentException;

import soapvo.DatosSOAPVO;


import com.google.gson.Gson;

public class DatosSOA {
	
	public String getTodosLosDatos () throws PersistentException {		
		orm.DAOFactory factory = orm.DAOFactory.getDAOFactory();
		orm.Trp_datos[] datos;

		datos = factory.getTrp_datosDAO().listTrp_datosByQuery(null, null);
		return buscar(datos);
	}
	
	//String consulta="alumno_id_rut.curso.colegio.provincia.region.re_des_region =" + variable + ;
	public String getIndiceMasaRegion (String region) throws PersistentException
	{
		orm.DAOFactory factory = orm.DAOFactory.getDAOFactory();
		orm.Trp_datos[] datos;
		
		String consulta="alumno_id_rut.curso.colegio.provincia.region.re_des_region ='" + region + "'" ;
		
		datos = factory.getTrp_datosDAO().listTrp_datosByQuery(consulta, null);
		//System.out.println();
		return buscar(datos);
	}
	
	public String getIndiceMasaRegion2 (String region) throws PersistentException
	{
		orm.DAOFactory factory = orm.DAOFactory.getDAOFactory();
		orm.Trp_datos[] datos;
		
		String consulta="alumno_id_rut.curso.colegio.provincia.region.re_des_region ='" + region + "'" ;
		
		datos = factory.getTrp_datosDAO().listTrp_datosByQuery(consulta, null);
		//System.out.println();
		return buscar(datos);
	}
	
	public String getIndiceMasaProvincia (String prov) throws PersistentException
	{
		orm.DAOFactory factory = orm.DAOFactory.getDAOFactory();
		orm.Trp_datos[] datos;
		
		String consulta="alumno_id_rut.curso.colegio.provincia.pr_des_prov ='" + prov + "'" ;
		
		datos = factory.getTrp_datosDAO().listTrp_datosByQuery(consulta, null);
		//System.out.println();
		return buscar(datos);
	}
	
	public String getIndiceMasaColegio (String coleg) throws PersistentException
	{
		orm.DAOFactory factory = orm.DAOFactory.getDAOFactory();
		orm.Trp_datos[] datos;
		
		String consulta="alumno_id_rut.curso.colegio.co_nombre ='" + coleg + "'" ;
		
		datos = factory.getTrp_datosDAO().listTrp_datosByQuery(consulta, null);
		//System.out.println();
		return buscar(datos);
	}
	
	public String getIndiceMasaCurso (String curso) throws PersistentException
	{
		orm.DAOFactory factory = orm.DAOFactory.getDAOFactory();
		orm.Trp_datos[] datos;
		
		String consulta="alumno_id_rut.curso.cu_curso ='" + curso + "'" ;
		
		datos = factory.getTrp_datosDAO().listTrp_datosByQuery(consulta, null);
		//System.out.println();
		return buscar(datos);
	}
	
	public String getIndiceMasaNivel_Regional (String nivel, String region) throws PersistentException
	{
		orm.DAOFactory factory = orm.DAOFactory.getDAOFactory();
		orm.Trp_datos[] datos;
		
		String consulta="alumno_id_rut.curso.nivel_id_nivel.ni_des_nivel ='" + nivel + "' and alumno_id_rut.curso.colegio.provincia.region.re_des_region ='" + region + "'";
		
		datos = factory.getTrp_datosDAO().listTrp_datosByQuery(consulta, null);
		//System.out.println();
		return buscar(datos);
	}
	
	public String getIndiceMasaNivel_Provincia (String nivel, String prov) throws PersistentException
	{
		orm.DAOFactory factory = orm.DAOFactory.getDAOFactory();
		orm.Trp_datos[] datos;
		
		String consulta="alumno_id_rut.curso.nivel_id_nivel.ni_des_nivel ='" + nivel + "' and alumno_id_rut.curso.colegio.provincia.pr_des_prov ='" + prov + "'";
		
		datos = factory.getTrp_datosDAO().listTrp_datosByQuery(consulta, null);
		//System.out.println();
		return buscar(datos);
	}
	
	public String getIndiceMasaNivel_Colegio (String nivel, String coleg) throws PersistentException
	{
		orm.DAOFactory factory = orm.DAOFactory.getDAOFactory();
		orm.Trp_datos[] datos;
		
		String consulta="alumno_id_rut.curso.nivel_id_nivel.ni_des_nivel ='" + nivel + "' and alumno_id_rut.curso.colegio.co_nombre ='" + coleg + "'";
		
		datos = factory.getTrp_datosDAO().listTrp_datosByQuery(consulta, null);
		//System.out.println();
		return buscar(datos);
	}
	
	public String getIndiceMasaNivel_Curso (String nivel, String curso) throws PersistentException
	{
		orm.DAOFactory factory = orm.DAOFactory.getDAOFactory();
		orm.Trp_datos[] datos;
		
		String consulta="alumno_id_rut.curso.nivel_id_nivel.ni_des_nivel ='" + nivel + "' and alumno_id_rut.curso.cu_curso ='" + curso + "'";
		
		datos = factory.getTrp_datosDAO().listTrp_datosByQuery(consulta, null);
		//System.out.println();
		return buscar(datos);
	}
	
	
	private String buscar(orm.Trp_datos[] arreglo) {

		String mensaje=" ";
		int largo=0;	
		Collection<DatosSOAPVO> coleccionSoapvo = new ArrayList<DatosSOAPVO>();
		largo = arreglo.length;

		if(largo>0){

			for(int i=0;i<largo;i++) {
				DatosSOAPVO objeto = DatosSOAPVO.crearSOAPVO(arreglo[i]);
				coleccionSoapvo.add(objeto);
			}		
			Gson gson = new Gson();
			mensaje = gson.toJson(coleccionSoapvo);

		} else mensaje = "No existen registros;";

		System.out.println(mensaje);
		return mensaje;
	}

}
